#!/bin/bash

# 自动部署脚本 - 通过位置参数指定配置文件
# 使用示例：sh auto_deploy.sh a.config start

# 检查是否提供了配置文件和操作参数
if [ $# -lt 2 ]; then
    echo "用法: $0 配置文件 [start|stop|restart|status]"
    echo "示例: $0 a.config start"
    exit 1
fi

CONFIG_FILE="$1"
ACTION="$2"

# 检查配置文件是否存在
if [ ! -f "$CONFIG_FILE" ]; then
    echo "错误：配置文件 '$CONFIG_FILE' 不存在！"
    exit 1
fi

# 导入配置
source "$CONFIG_FILE"

# 启动方法
start() {
    pid=$(ps -ef | grep "$JAR_FILE" | grep -v grep | awk '{print $2}')
    if [ -z "$pid" ]; then
        nohup java -jar "$JAR_FILE" > "$LOG_FILE" 2>&1 &
        pid=$(ps -ef | grep "$JAR_FILE" | grep -v grep | awk '{print $2}')
        echo "服务 ${JAR_FILE} 启动中！pid=${pid}"
        echo "查看日志："
        tail -f $LOG_FILE
    else
        echo "服务已运行，pid = ${pid}。如需重启，请使用 restart 命令。"
    fi
}

# 停止方法
stop() {
    pid=$(ps -ef | grep "$JAR_FILE" | grep -v grep | awk '{print $2}')
    if [ -z "$pid" ]; then
        echo "服务未运行，无需停止！"
    else
        kill -9 "$pid"
        echo "服务停止成功！pid:${pid} 已强制终止。"
    fi
}

# 状态检查
status() {
    pid=$(ps -ef | grep "$JAR_FILE" | grep -v grep | awk '{print $2}')
    if [ -z "$pid" ]; then
        echo "服务未运行！"
    else
        echo "服务运行中，pid=${pid}"
    fi
}

# 重启方法
restart() {
    echo "正在重启服务...";
    stop
    start
    echo "服务重启成功！"
}

# 执行对应操作
case "$ACTION" in
    start|stop|restart|status)
        ${ACTION}
        ;;
    *)
        echo "未知操作: $ACTION"
        echo "支持的操作: start|stop|restart|status"
        exit 1
        ;;
esac
